home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 1.0 beta / flock-1.0RC3.en-US.win32.exe / flock / components / flockStopWatch.js < prev    next >
Text File  |  2007-10-18  |  7KB  |  213 lines

  1. //
  2. // BEGIN FLOCK GPL
  3. // 
  4. // Copyright Flock Inc. 2005-2007
  5. // http://flock.com
  6. // 
  7. // This file may be used under the terms of of the
  8. // GNU General Public License Version 2 or later (the "GPL"),
  9. // http://www.gnu.org/licenses/gpl.html
  10. // 
  11. // Software distributed under the License is distributed on an "AS IS" basis,
  12. // WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  13. // for the specific language governing rights and limitations under the
  14. // License.
  15. // 
  16. // END FLOCK GPL
  17. //
  18.  
  19. const FLOCK_STOPWATCH_CID        = Components.ID("{5499e4fd-60ab-4c39-aa6d-badd82e4dd39}");
  20. const FLOCK_STOPWATCH_CLASSNAME  = "Flock Stop Watch";
  21. const FLOCK_STOPWATCH_CONTRACTID = "@flock.com/stopwatch;1";
  22.  
  23. // ========================================================
  24. // ========== BEGIN flockStopWatch class ==========
  25. // ========================================================
  26.  
  27. function flockStopWatchMark(inMarkName, inMarkTime)
  28. {
  29.   this._markName = inMarkName;
  30.   this._markTime = inMarkTime;
  31. }
  32.  
  33. function flockStopWatch()
  34. {
  35.   this._logger = Components.classes['@flock.com/logger;1'].createInstance(Components.interfaces.flockILogger);
  36.   this._logger.init('flockStopWatch');
  37.   this._logger.info('Created Stop Watch Object');
  38.   this._watches = new Array();
  39. }
  40.  
  41. // BEGIN flockIStopWatch interface
  42. flockStopWatch.prototype.start =
  43. function flockStopWatch_start(nStopWatchName)
  44. {
  45.   this._stopWatchName = nStopWatchName;
  46.   this._startTime = new Date();
  47.   this._marks = new Array();
  48.   this._logger.info("[" + this._stopWatchName + "] Start Time = " + this.timeToString(this._startTime));
  49. }
  50.  
  51. flockStopWatch.prototype.stop =
  52. function flockStopWatch_stop()
  53. {
  54.   var mark = 0;
  55.   this._endTime = new Date();
  56.   this._logger.info("[" + this._stopWatchName + "] Results for Stop Watch:");  
  57.   for (markEntry = 0; markEntry < this._marks.length; markEntry++)
  58.   {
  59.     this._logger.info("[" + this._stopWatchName + "]  Mark (" + this._marks[markEntry]._markName + ") = " +
  60.       (markEntry > 0 ?  this.getTimeDiff(this._marks[markEntry]._markTime,this._marks[markEntry-1]._markTime) + ", " : "") +
  61.       this.getTimeDiff(this._marks[markEntry]._markTime,this._startTime));
  62.   }
  63.   this._logger.info("[" + this._stopWatchName + "]  Total Time = " + this.getTimeDiff(this._endTime,this._startTime));
  64. }
  65.  
  66. flockStopWatch.prototype.mark =
  67. function flockStopWatch_mark(nMarkName)
  68. {
  69.   var markTime = new flockStopWatchMark(nMarkName, new Date());
  70.   var prevMarkTime = (this._marks.length > 0 ? this._marks[this._marks.length - 1]._markTime : this._startTime);
  71.   
  72.   this._marks.push(markTime);
  73.   this._logger.info("[" + this._stopWatchName + "] Mark Time (" + nMarkName + ") = " + this.timeToString(markTime._markTime));    
  74. }
  75.  
  76. // Internal functions
  77. flockStopWatch.prototype.timeToString =
  78. function flockStopWatch_timeToString(inDateTime)
  79. {
  80.   var outString = "";
  81.   
  82.   outString = outString + inDateTime.getHours();
  83.   outString = outString + ":" + inDateTime.getMinutes();
  84.   outString = outString + ":" + inDateTime.getSeconds();
  85.   outString = outString + "." + inDateTime.getMilliseconds();
  86.   
  87.   return outString;  
  88. }
  89.  
  90. flockStopWatch.prototype.getTimeDiff =
  91. function flockStopWatch_getTimeDiff(endTime, startTime)
  92. {
  93.   var milliseconds = 0;
  94.   var seconds = 0;
  95.   var minutes = 0;
  96.   var hours = 0;
  97.    
  98.   milliseconds = (endTime - startTime);
  99.   if (milliseconds > 999) {
  100.     seconds = Math.round(milliseconds / 1000);
  101.     milliseconds = (milliseconds % 1000);
  102.   }
  103.   if (seconds > 59) {
  104.     minutes = Math.round(seconds / 60);
  105.     seconds = (seconds % 60);
  106.   }
  107.   if (minutes > 59) {
  108.     hours = Math.round(minutes / 60);
  109.     minutes = (minutes % 60);
  110.   }
  111.  
  112.   return (hours + ":" + minutes + ":" + seconds + "." + milliseconds);
  113. }
  114.  
  115. // END flockIStopWatch interface
  116.  
  117.  
  118. // BEGIN nsISupports interface
  119. flockStopWatch.prototype.QueryInterface =
  120. function flockStopWatch_QueryInterface(aIID)
  121. {
  122.   if (!aIID.equals(Components.interfaces.nsISupports) &&
  123.       //!aIID.equals(Components.interfaces.nsIClassInfo) &&
  124.       !aIID.equals(Components.interfaces.flockIStopWatch))
  125.   {
  126.     throw Components.results.NS_ERROR_NO_INTERFACE;
  127.   }
  128.   return this;
  129. }
  130. // END nsISupports interface
  131.  
  132. // BEGIN nsIClassInfo interface
  133. /*
  134. flockStopWatch.prototype.flags = Components.interfaces.nsIClassInfo.THREADSAFE;
  135. flockStopWatch.prototype.contractID = FLOCK_STOPWATCH_CONTRACTID;
  136. flockStopWatch.prototype.classDescription = FLOCK_STOPWATCH_CLASSNAME;
  137. flockStopWatch.prototype.implementationLanguage = Componets.interfaces.nsIProgrammingLanguage.JAVASCRIPT;
  138.  
  139. flockStopWatch.prototype.getInterfaces =
  140. function flockStopWatch_getInterfaces(count)
  141. {
  142.     var interfaceList = [
  143.       //Components.interfaces.nsIClassInfo,
  144.         Components.interfaces.nsISupports];
  145.     count.value = interfaceList.length;
  146.     return interfaceList;
  147. }
  148.  
  149. flockStopWatch.prototype.getHelperForLanguage =
  150. function flockStopWatch_getHelperForLanguage(count) 
  151. {
  152.   return null;
  153. }
  154. */
  155. // END nsIClassInfo interface
  156.  
  157.  
  158. // ========== BEGIN XPCOM Module support ==========
  159.  
  160. // BEGIN flockflockStopWatchModule object
  161. var flockStopWatchModule = new Object();
  162.  
  163. flockStopWatchModule.registerSelf =
  164. function flockStopWatchModule_registerSelf(compMgr, fileSpec, location, type)
  165. {
  166.   compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
  167.   compMgr.registerFactoryLocation( FLOCK_STOPWATCH_CID, 
  168.                                    FLOCK_STOPWATCH_CLASSNAME,
  169.                                    FLOCK_STOPWATCH_CONTRACTID, 
  170.                                    fileSpec, 
  171.                                    location,
  172.                                    type );
  173. }
  174.  
  175. flockStopWatchModule.getClassObject =
  176. function flockStopWatchModule_getClassObject(compMgr, cid, iid)
  177. {
  178.   if (!cid.equals(FLOCK_STOPWATCH_CID))
  179.     throw Components.results.NS_ERROR_NO_INTERFACE;
  180.   if (!iid.equals(Components.interfaces.nsIFactory))
  181.     throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
  182.   return flockStopWatchFactory;
  183. }
  184.  
  185. flockStopWatchModule.canUnload =
  186. function flockStopWatchModule_canUnload(compMgr)
  187. {
  188.   return true;
  189. }
  190. // END flockflockStopWatchModuleModule object
  191.  
  192.  
  193. // BEGIN flockStopWatchFactory object
  194. var flockStopWatchFactory = new Object();
  195.  
  196. flockStopWatchFactory.createInstance =
  197. function flockStopWatchFactory_createInstance(outer, iid)
  198. {
  199.   if (outer != null) {
  200.     throw Components.results.NS_ERROR_NO_AGGREGATION;
  201.   }
  202.   return (new flockStopWatch()).QueryInterface(iid);
  203. }
  204. // END flockStopWatchFactory object
  205.  
  206.  
  207. // NS module entry point
  208. function NSGetModule(compMgr, fileSpec) {
  209.   return flockStopWatchModule;
  210. }
  211.  
  212. // ========== END XPCOM module support ==========
  213.